﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CsClient
{
    /**
     * Klasa reprezentująca przejście między sąsiadującymi ze sobą polami mapy. 
     */
    class Przejscie
    {
        PoleMapy skad, dokad; //Pola łączone przejściem.
        int kosztPrzejscia; //Koszt przejscia z pola "skad" na pole "dokad".

        public Przejscie(PoleMapy skad, PoleMapy dokad)
        {
            if (((Math.Abs(skad.getPolozenie().getX() - dokad.getPolozenie().getX()) == 1)
                && (Math.Abs(skad.getPolozenie().getY() - dokad.getPolozenie().getY()) == 0))
                || ((Math.Abs(skad.getPolozenie().getX() - dokad.getPolozenie().getX()) == 0)
                && (Math.Abs(skad.getPolozenie().getY() - dokad.getPolozenie().getY()) == 1)))
            {
                if (!dokad.czyJestPrzeszkoda())
                {
                    this.skad = skad;
                    this.dokad = dokad;
                    kosztPrzejscia = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(
                        Agent.cennikSwiata.moveCost * (skad.getWysokosc() - dokad.getWysokosc()))
                        / 100));
                    kosztPrzejscia += Agent.cennikSwiata.moveCost;
                }
                else
                {
                    throw new Exception("Próba utworzenia przejścia na przeszkodę!");
                }
            }
            else
            {
                throw new Exception("Próba utworzenia przejścia o odległości innej niż 1.");
            }
        }

        public int getKosztPrzejscia()
        {
            return kosztPrzejscia;
        }

        public PoleMapy getDokad()
        {
            return dokad;
        }
    }
}
